﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

using SOAPReniecService.Dominio;
using SOAPReniecService.Persistencia;
using System.ServiceModel.Web;
using System.Net;

namespace SOAPReniecService
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "ReniecService" en el código, en svc y en el archivo de configuración a la vez.
    public class ReniecService : IReniecService
    {
        private PersonaDAO dao = new PersonaDAO();


        public Dominio.Persona RegistrarPersona(int dni_, string nombre_, string apellidoPaterno_, string apellidoMaterno_)
        {

            Persona existePersona = ObtenerPersona(dni_);
            if (existePersona != null)
            {
                return existePersona;
            }
            else
            {
                Persona PersonaACrear = new Persona();
                PersonaACrear.dni = dni_;
                PersonaACrear.nombre = nombre_;
                PersonaACrear.apellidoMaterno = apellidoMaterno_;
                PersonaACrear.apellidoPaterno = apellidoPaterno_;
                return dao.Crear(PersonaACrear);
            }

        }

        public Dominio.Persona ObtenerPersona(int dni_)
        {
            return dao.Obtener(dni_);
        }

        public bool ValidaPersona(int dni_)
        {
            Persona existePersona = ObtenerPersona(dni_);

            if (existePersona == null)
            {
                throw new FaultException<ValidationException>(new ValidationException { ValidationError = "[RENIEC]: El DNI ingresado no es válido. No es posible continuar con el Proceso." },
                new FaultReason("[RENIEC]: El DNI ingresado no es válido. No es posible continuar con el Proceso."));
               
            }
            else
            {
                return true;
            }
        }

        public List<Dominio.Persona> ListarPersonas()
        {
            return dao.ListarPersonas();
        }
    }
}
